(function (G) {
  const javaUrl = G.Storage.get('JAVAURL')
  const userInfo = G.Storage.get('userInfo')
  G.vue({
    data: {
      newPassword: '',
      confirmNewPassword: '',
      toggleMode: 0, // 默认登录模式
      // 模式控制
      isRegisterMode: false, // false:登录模式, true:注册模式

      // 表单数据
      email: '',
      password: '',
      code: '',          // 验证码
      confirmPassword: '', // 确认密码
      agree: false,      // 协议同意

      // 错误提示
      emailError: '',
      passwordError: '',
      codeError: '',
      confirmError: '',

      // 验证码按钮
      codeBtnText: '获取验证码',
      codeBtnDisabled: false,
      countdown: 60,

      // 状态控制
      loading: false,
      formValid: false    // 表单是否验证通过
    },
    methods: {
      // 切换到忘记密码模式
      switchToForget() {
        this.setData({ toggleMode: 2 });
      },
      // 发送验证码
      sendCode() {
        // 实现验证码发送逻辑
      },
      // 重置密码（忘记密码模式）
      handleResetPassword() {
        // 实现密码重置逻辑
      },

      // 切换到注册模式
      switchToRegister() {
        this.setData({ toggleMode: 1 });
      },
      // 切换到登录模式
      switchToLogin() {
        this.setData({ toggleMode: 0 });
      },
      onLoad() {
        // 页面加载时初始化表单验证状态
        this.checkFormValid();
      },

      // 切换登录/注册模式
      toggleMode() {
        this.setData({
          isRegisterMode: false,
          // 重置表单和错误提示
          email: '',
          password: '',
          code: '',
          confirmPassword: '',
          agree: false,
          emailError: '',
          passwordError: '',
          codeError: '',
          confirmError: '',
          codeBtnText: '获取验证码',
          codeBtnDisabled: false,
          countdown: 60
        }, () => {
          this.switchToLogin();
          this.checkFormValid(); // 重新检查表单有效性
        });
      },

      // 邮箱输入验证
      handleEmailInput() {
        const { email } = this.data;
        let error = '';

        if (!email) {
          error = '请输入邮箱';
        } else if (!this.validateEmail(email)) {
          error = '请输入正确的邮箱格式';
        }

        this.setData({ emailError: error }, () => {
          this.checkFormValid();
        });
      },

      // 密码输入验证
      handlePasswordInput() {
        const { password, isRegisterMode } = this.data;
        let error = '';

        if (!password) {
          error = '请输入密码';
        } else if (isRegisterMode && password.length < 6) {
          error = '密码长度至少6位';
        }

        this.setData({ passwordError: error }, () => {
          this.checkFormValid();
        });
      },

      // 确认密码验证
      handleConfirmInput() {
        const { confirmPassword, password } = this.data;
        let error = '';

        if (!confirmPassword) {
          error = '请确认密码';
        } else if (confirmPassword !== password) {
          error = '两次密码输入不一致';
        }

        this.setData({ confirmError: error }, () => {
          this.checkFormValid();
        });
      },

      // 检查表单是否有效（控制按钮禁用状态）
      checkFormValid() {
        const { isRegisterMode, email, password, code, confirmPassword, agree,
          emailError, passwordError, codeError, confirmError } = this.data;

        let valid = true;

        // 基础验证：邮箱和密码不为空且无错误
        if (!email || !password || emailError || passwordError) {
          valid = false;
        }

        // 注册模式额外验证
        if (isRegisterMode) {
          if (!code || !confirmPassword || !agree || codeError || confirmError) {
            valid = false;
          }
        }

        this.setData({ formValid: valid });
      },

      // 邮箱格式验证
      validateEmail(email) {
        const reg = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
        return reg.test(email);
      },
      // 获取验证码
      getVerificationCode() {
        const { email, codeBtnText } = this.data;
        if (codeBtnText != '获取验证码') {
          return;
        } else {
          // 再次验证邮箱格式（防止绕过输入验证直接点击）
          if (!this.validateEmail(email)) {
            this.setData({ emailError: '请输入正确的邮箱格式' });
            return;
          }

          // 检查邮箱是否已被注册
          wx.showLoading({ title: '检查中...' });
          G.post('/checkEmailExists', {
            email: email
          }).then(res => {
            wx.hideLoading();
            if (res.errorMsg) {
              // 邮箱已被注册
              wx.showToast({ title: res.errorMsg, icon: 'none' });
              this.setData({ emailError: res.errorMsg });
              return;
            }

            // 邮箱未被注册，继续发送验证码
            this.setData({ codeBtnDisabled: true });
            G.post('/sendEmailCode', {
              email: email
            }).then(res => {
              if (!res.errorMsg) {
                wx.showToast({ title: '验证码已发送至邮箱' });
                this.startCountdown(); // 启动倒计时
              } else {
                wx.showToast({ title: res.errorMsg, icon: 'none' });
                this.setData({ codeBtnDisabled: false });
              }
            })
          }).catch(() => {
            wx.hideLoading();
            wx.showToast({ title: '网络错误，请稍后重试', icon: 'none' });
          });
        }
      },

      // 验证码倒计时
      startCountdown() {
        const timer = setInterval(() => {
          const { countdown } = this.data;

          if (countdown <= 1) {
            clearInterval(timer);
            this.setData({
              countdown: 60,
              codeBtnText: '获取验证码',
              codeBtnDisabled: false
            });
          } else {
            this.setData({
              countdown: countdown - 1,
              codeBtnText: `${countdown - 1}秒后重新获取`
            });
          }
        }, 1000);
      },
      // 登录处理
      handleLogin() {
        const { email, password } = this.data;

        this.setData({ loading: true });

        // 使用G.post替代wx.request，与注册接口保持一致
        G.post('/wxnewlogin', {
          email: email,
          password: G.MD5(password) // 对密码进行MD5加密，增强安全性
        }).then(res => {
          console.log('1');
          if (!res.errorMsg) {
            console.log('2',res);
            // 登录成功：保存token并跳转首页
            G.Storage.set('userInfo', res.token||res.data.token);
            console.log('4');
            wx.showToast({ title: '登录成功', icon: 'success' });
            wx.reLaunch({
              url: '/pages/index1/index1',
            });
          } else {
            console.log('3');
            wx.showToast({
              title: res.errorMsg || '用户名或密码错误',
              icon: 'none'
            });
          }
        }).catch(() => {
          wx.showToast({ title: '网络错误，请稍后重试', icon: 'none' });
        }).finally(() => {
          this.setData({ loading: false });
        });
      },

      // 注册处理
      handleRegister() {
        const { email, password, code } = this.data;

        // 获取用户信息中的openId
        const userInfo = G.Storage.get('userInfo');
        const openId = userInfo ? userInfo.openId : ''; // 假设openId存储在userInfo的openId字段中

        if (!openId) {
          wx.showToast({ title: '获取用户信息失败，请重试', icon: 'none' });
          this.setData({ loading: false });
          return;
        }

        this.setData({ loading: true });

        // 调用注册接口，添加openId参数
        G.post('/register', {
          email: email,
          password: G.MD5(password),
          code: code,
          openId: openId
        }).then(res => {
          if (!res.errorMsg) {
            wx.showToast({ title: '注册成功', icon: 'success' });
            this.toggleMode(); // 自动切换到登录模式
          } else {
            wx.showToast({
              title: res.errorMsg || '注册失败，请重试',
              icon: 'none'
            });
          }
        }).catch(() => {
          wx.showToast({ title: '网络错误，请稍后重试', icon: 'none' });
        }).finally(() => {
          this.setData({ loading: false });
        });
      },

      // 打开用户协议（示例）
      openProtocol() {
        wx.showModal({
          title: '用户协议',
          content: '请阅读并同意用户协议...',
          showCancel: false
        });
      },

      // 打开隐私政策（示例）
      openPrivacy() {
        wx.showModal({
          title: '隐私政策',
          content: '请阅读并同意隐私政策...',
          showCancel: false
        });
      },

      // 检查表单有效性（实时更新）
      checkFormValid() {
        const { isRegisterMode, email, password, code, confirmPassword, agree } = this.data;
        let valid = true;

        // 基础验证
        if (!email || !password) valid = false;

        // 注册模式额外验证
        if (isRegisterMode) {
          if (!code || !confirmPassword || !agree || password !== confirmPassword) {
            valid = false;
          }
        }

        this.setData({ formValid: valid });
      }
    },
    mounted: function (options) {
    }
  })
})(wx.$)